VCRs (which recorded and read movies on magnetic tapes) included a fast forward or fast reverse function. To achieve this, an electric motor was rotated to wind the magnetic tape at a higher speed, and where appropriate, the direction of rotation of this electric motor was reversed.
Now videos are often stored on servers connected to terminals (personal computers, laptop computers, tablets, mobile phones, etc.). These terminals allow viewing the videos by streaming them. The terminals and servers can have significant storage capacity and computing power, but the available bandwidth between terminal and server often constitutes a bottleneck.
Servers that store video streams are generally distribution servers, which essentially store encrypted video streams and transmit them on demand but which are incapable of decrypting these video streams and more particularly of extracting targeted information from them. They do not have the cryptographic keys required to perform such decryption (intentionally, for security reasons). The cryptographic keys for decryption are usually supplied directly to the terminals by other servers (known as DRM servers) which, after authentication of a terminal and verification of its access rights, communicate to the terminal the information it requires to decrypt the video stream received from a distribution server. This required information is not necessarily the cryptographic key itself, but may be information from which the terminal is able to calculate the cryptographic key.
In such a scheme, in order to fast forward, it would seem natural to download the video stream at a faster rate, but often the available bandwidth does not allow this. Even when the bandwidth allows for example tripling the speed of the download to enable streaming accelerated by a factor of three, this is unsatisfactory because it represents a waste of bandwidth.
Another difficulty also arises. In order to move forward or back in a video stream in an informed and relevant way, it is useful to have an approximate representation of the content of the video stream. However, to construct this approximate representation, it is necessary to access elements scattered through the entire video stream (from the beginning to the end of the video stream).
It has been proposed to provide a strip containing scenes representative of the complete video, for example one image per minute, to enable a user to find the desired position in the video stream and click directly on the image corresponding to the scene of interest. This is what Google does for example in its Youtube service. The server is then adapted to generate an image containing a series of miniature images corresponding to different moments in the video stream. As for the company Apple, it has developed a technology called HLS (“HTTP live streaming”). This technology allows the server to generate representative images from a video stream and to transmit them on request. But in either case, it is necessary to have sufficient control over the distribution server (which must be modified to add the required functionalities). Above all, if the video stream is encrypted, it is necessary to be able to decrypt the video stream at the server, which is often not possible and is often not desirable for security reasons.
It might seem conceivable to transmit only a portion of the video stream (for example one image out of three), but this solution is not considered because the distribution server does not know how to access the images in the video stream, which are encrypted. In addition, it is insufficient to identify one image out of three and transmit it, because the images are compressed and some images are not self-contained (cannot be decompressed without additional information).
More specifically, it is common for the videos to contain three types of images, called I images, B images, and P images.
I images are self-contained images, in the sense that they are compressed (for example with an algorithm such as the JPEG algorithm) without considering the images that surround them. Such I images are useful for video streams which can be viewed mid-stream (without starting from the beginning), for example video streams relating to events filmed live. For example, there are typically one or two I images per second in a H264 video.
P images are defined by their difference from the previous image. As consecutive images are generally similar, this increases the compression rate. However, an image can only be decompressed in the presence of the previous image, which must be included (otherwise, the decompressed image is incorrectly reconstructed).
Finally, B images are even more compressed (at equivalent quality) because they can make use not only of the previous image but also of the following image. This adds latency, since decompression of a B image requires having received the following image as well. It also requires storing three images in memory (the previous one, the current one, and the next one).
In practice, a video stream comprises a sequence of images alternating between these different types of images I, P, B, for example in the order IBBPBBPBBPBBI. Other types of images and image sequences are possible, but in most implementations, not every image of the video stream is self-sufficient from a decompression point of view (only some are).
In addition, the image size fluctuates. Some images are easier to compress than others, and by definition a heavily compressed image has a smaller size than an uncompressed image.
Since the structure of a video stream is complex and the video stream is encrypted, it has not appeared possible to perform the relevant extractions.
Various techniques have been proposed for solving similar or related problems and are described in particular in patent applications US 2006/0288392 A1, US 2013/0097508 A1, US 2014/0282262 A1, and US 2002/0075572 A1, or in the article “Swift: Reducing the Effects of Latency in Online Video Scrubbing”, by Justin Matejka, Tovi Grossman, George Fitzmaurice, CHI '12, May 5-10, 2012, Austin, Tex., USA. However, none of these solves the above problems in a satisfactory manner. The invention aims to improve the situation.